.long SYMBOL_NAME(do_set_callbacks)
.long SYMBOL_NAME(do_net_io_op)
.long SYMBOL_NAME(do_fpu_taskswitch)
- .long SYMBOL_NAME(do_yield)
- .long SYMBOL_NAME(kill_domain)
+ .long SYMBOL_NAME(do_sched_op)
.long SYMBOL_NAME(do_dom0_op)
.long SYMBOL_NAME(do_network_op)
.long SYMBOL_NAME(do_block_io_op)
}
-/******************************************************************************
-* Add and remove a domain
-******************************************************************************/
+/*
+ * Add and remove a domain
+ */
void sched_add_domain(struct task_struct *p)
{
p->state = TASK_SUSPENDED;
}
-/****************************************************************************
+/*
* wake up a domain which had been sleeping
- ****************************************************************************/
+ */
int wake_up(struct task_struct *p)
{
unsigned long flags;
return ret;
}
-/****************************************************************************
+/*
* Voluntarily yield the processor to another domain, until an event occurs.
- ****************************************************************************/
+ */
long do_yield(void)
{
current->state = TASK_INTERRUPTIBLE;
return 0;
}
-/****************************************************************************
+/*
+ * Demultiplex scheduler-related hypercalls.
+ */
+long do_sched_op(unsigned long op)
+{
+ long ret = 0;
+
+ switch( op )
+ {
+
+ case SCHEDOP_yield:
+ {
+ ret = do_yield();
+ break;
+ }
+
+ case SCHEDOP_exit:
+ {
+ kill_domain();
+ break;
+ }
+
+ default:
+ ret = -ENOSYS;
+ }
+
+ return ret;
+}
+
+/*
* Control the scheduler
- ****************************************************************************/
+ */
long sched_bvtctl(unsigned long c_allow)
{
ctx_allow = c_allow;
return 0;
}
-/****************************************************************************
+/*
* Adjust scheduling parameter for a given domain
- ****************************************************************************/
+ */
long sched_adjdom(int dom, unsigned long mcu_adv, unsigned long warp,
unsigned long warpl, unsigned long warpu)
{
return 0;
}
-/****************************************************************************
+/*
* cause a run through the scheduler when appropriate
* Appropriate is:
* - current task is idle task
* - the current task already ran for it's context switch allowance
* Otherwise we do a run through the scheduler after the current tasks
* context switch allowance is over.
- ****************************************************************************/
+ */
void reschedule(struct task_struct *p)
{
int cpu = p->processor;
}
-/****************************************************************************
+/*
* The main function
* - deschedule the current domain.
* - pick a new domain.
* i.e., the domain with lowest EVT.
* The runqueue should be ordered by EVT so that is easy.
- ****************************************************************************/
+ */
asmlinkage void __enter_scheduler(void)
{
struct task_struct *prev, *next, *next_prime, *p;
#define __HYPERVISOR_set_callbacks 5
#define __HYPERVISOR_net_io_op 6
#define __HYPERVISOR_fpu_taskswitch 7
-#define __HYPERVISOR_yield 8
-#define __HYPERVISOR_exit 9
-#define __HYPERVISOR_dom0_op 10
-#define __HYPERVISOR_network_op 11
-#define __HYPERVISOR_block_io_op 12
-#define __HYPERVISOR_set_debugreg 13
-#define __HYPERVISOR_get_debugreg 14
-#define __HYPERVISOR_update_descriptor 15
-#define __HYPERVISOR_set_fast_trap 16
-#define __HYPERVISOR_dom_mem_op 17
-#define __HYPERVISOR_multicall 18
-#define __HYPERVISOR_kbd_op 19
-#define __HYPERVISOR_update_va_mapping 20
+#define __HYPERVISOR_sched_op 8
+#define __HYPERVISOR_dom0_op 9
+#define __HYPERVISOR_network_op 10
+#define __HYPERVISOR_block_io_op 11
+#define __HYPERVISOR_set_debugreg 12
+#define __HYPERVISOR_get_debugreg 13
+#define __HYPERVISOR_update_descriptor 14
+#define __HYPERVISOR_set_fast_trap 15
+#define __HYPERVISOR_dom_mem_op 16
+#define __HYPERVISOR_multicall 17
+#define __HYPERVISOR_kbd_op 18
+#define __HYPERVISOR_update_va_mapping 19
/* And the trap vector is... */
#define TRAP_INSTR "int $0x82"
#define EVENTS_MASTER_ENABLE_BIT 31
+/*
+ * SCHEDOP_* - Scheduler hypercall operations.
+ */
+#define SCHEDOP_yield 0
+#define SCHEDOP_exit 1
+
+
+
#ifndef __ASSEMBLY__
#include "network.h"